<?php
namespace app\admin\controller;
use think\Db;
use think\Config;

class Link extends Authentication
{
    //列表方法
    public function index()
    {   
        //加载模块配置:默认分页条数
        define("PAGINATE_NUM",config('DEFAULT_PAGINATE_NUM'));
        
        //查询数据库
        $res = Db::name('link')->paginate(PAGINATE_NUM);

        //模板参数变量替换
        $this->assign('LINKS',$res);
        return $this->fetch();
    }
    
    //添加方法
    public function insert()
    {
        //判断表单是否Post传值
        if(request()->isPost()){
          
          $data=[
          
            //如果未选择则默认友情链接为普通友情链接            
            "name" =>input("name"),
            "url"  =>input("url"),
            "image"=>input("image"),
            "desc" =>input("desc"),
            "type" =>input("type")?input("type"):0,
            "visible"=>input("visible"),
            "create_time"=>date("Y-m-d H:i:s",time()),
            "update_time"=>date("Y-m-d H:i:s",time()),
          ];
          
          //按照规则实例化验证器
          $validate = \think\Loader::validate('link');
          
          //验证器验证待插入数据
          if($validate->check($data)){
            
            //插入数据            
            $db = Db::name('link')->insert($data);
            
            //判断插入结果            
            if($db){
              return $this->success("友情链接添加成功! ");
            }else{
              return $this->error("友情链接添加失败! ");
            }    
          }else{
            return $this->error($validate->getError());
          }
        }
        //如果是添加页面普通加载
        return $this->fetch('insert');
    }
    //==============
    //删除方法(单个)
    //==============
    public function delete()
    {
        //判断表单是否Get传值
        if(request()->isGet()){
          $id = input('id');
          
          // 通过助手函数根据主键删除
          if(Db::name('link')->delete($id)){
            return $this->success("友情链接删除成功! ");
          }else{
             return $this->error("友情链接删除失败! ");
          }
        }
    }
    //==============
    //删除方法(批量)
    //==============
    public function batch_delete()
    {
        //判断表单是否Post传值
        if(request()->isPost()){
          $id =\think\Request::instance()->param('id'); 
          
          //判断参数是否为空
          if(empty($id)){
            return $this->error("未选择内容");
          }
          
          //非空处理
          $id = join(",",$id);
          
          // 通过助手函数根据主键删除
          if(Db::name('link')->delete($id)){
            return $this->success("链接批量删除成功! ");
          }else{
             return $this->error("链接批量删除失败! ");
          }
        }
    }
    //编辑方法
    public function edit()
    {
        //判断表单是否Get传值
        if(request()->isPost()){
          $id = input('id');
          
          //获取友情链接更新数据
          $data = [
            'name'=>input('name'),
            'desc'=>input('desc'),
            'url'=>input('url'),
            'image'=>input('image'),
            'type'=>input('type'),
            'visible'=>input('visible'),
            'update_time'=>date("Y-m-d H:i:s",time()),
          ];

          //按照规则实例化验证器
          $validate = \think\Loader::validate('link');

          //验证器以编辑场景验证待更新数据
          if($validate->scene('edit')->check($data)){

            $res = Db::name('link')
                    ->where('id', $id)
                    ->update($data);
            //die;
            // 判断更新结果        
            if($res){
              return $this->success("友情链接更新成功! ","../../index");
            }else{
               return $this->error("友情链接更新失败! ");
            }
          }else{
            return $this->error($validate->getError());
          }
        }    
        //判断表单是否Get传值
        if(request()->isGet()){
          
          //获取友情链接ID
          $id = input('id');
          
          //助手函数查询友情链接记录
          $record = Db::name('link')->where('id',$id)->find();
          $this->assign('record',$record);
          
          //更新页面加载
          return $this->fetch('edit');          
        }
    }
}